package com.education.welco.mapper;


import com.education.welco.pojo.TClass;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.HashMap;
import java.util.List;

/**
 * 班级 数据层
 *
 * @author d
 * @date 2020-05-08
 */
@Repository
public interface TClassMapper {

    /**
     * 查询班级信息
     *
     * @param id 班级ID
     * @return 班级信息
     */
    public TClass selectTClassById(Integer id);


    /**
     * 查询班级信息
     *
     * @param tClass 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdAndType(TClass tClass);

    /**
     * 查询班级信息
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogId(@Param("catalogId") Integer catalogId);

    /**
     * 查询班级信息
     *
     * @param deptId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByDeptId(@Param("deptId") Integer deptId,@Param("catalogId") Integer catalogId, @Param("userId") Integer userId);


    /**
     * 查询班级信息
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogId2(@Param("catalogId") Integer catalogId, @Param("resourceId") Integer resourceId);


    /**
     * 查询班级信息
     *
     * @param tClass 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogId3(TClass tClass);


    /**
     * 查询课程问答
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdAnswer(@Param("outId") Integer outId, @Param("catalogId") Integer catalogId );

    /**
     * 查询录播视频
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdVideo(@Param("resourceId") Integer resourceId, @Param("catalogId") Integer catalogId );
    /**
     * 查询录播视频
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdVideoAll(@Param("catalogId") Integer catalogId);

    /**
     * 查询课程问答 查看班级
     *
     * @param answeringId
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdAnswerAll( @Param("answeringId") Integer answeringId);

    /**
     * 查询预习 查看班级
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdPreviewAll( @Param("catalogId") Integer catalogId);

    /**
     * 查询课后作业 查看班级
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdWorkAll( @Param("catalogId") Integer catalogId);

    /**
     * 查询试题 查看班级
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdQuestAll( @Param("catalogId") Integer catalogId);
    /**
     * 查询预习
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdPreview(@Param("outId") Integer outId, @Param("catalogId") Integer catalogId);
    /**
     * 查询课后作业
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdWork(@Param("outId") Integer outId, @Param("catalogId") Integer catalogId );
    /**
     * 查询试卷试题
     *
     * @param catalogId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByCatalogIdQuest( @Param("outId") Integer outId, @Param("catalogId") Integer catalogId );


    /**
     * 查询班级信息
     *
     * @param deptId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassAllByDeptId(@Param("deptId") Integer deptId);


    /**
     * 查询班级信息
     *
     * @param schoolId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassAllBySchoolId(@Param("schoolId") Integer schoolId);


    /**
     * 查询班级信息
     *
     * @param resourceId 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByResourceId(@Param("resourceId") Integer resourceId);


    /**
     * 查询班级信息
     *
     * @param id 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByClassId(@Param("id") Integer id);


    public List<TClass> selectTClassByTeaId(@Param("teacherId") Integer teacherId);


    /**
     * 查询班级信息
     *
     * @param id 班级ID
     * @return 班级信息
     */
    public List<TClass> selectOverTClassByClassId(@Param("id") Integer id);


    /**
     * 查询班级信息
     *
     * @param id 班级ID
     * @return 班级信息
     */
    public List<TClass> selectLookTClassByClassId(@Param("id") Integer id);

    /**
     * 查询班级信息
     *
     * @param id 班级ID
     * @return 班级信息
     */
    public List<TClass> selectTClassByClassIdAndLook(@Param("id") Integer id);

    /**
     * 查询班级信息
     *
     * @param list 班级ID 集合
     * @return 班级信息
     */
    public List<TClass> selectTClassByIds(List<Integer> list);

    /**
     * 查询班级列表
     *
     * @param tClass 班级信息
     * @return 班级集合
     */
    public List<TClass> selectTClassList(TClass tClass);

    /**
     * 查询班级列表
     *
     * @param tClass 班级信息
     * @return 班级集合
     */
    public List<TClass> selectTClassListOther(TClass tClass);

    /**
     * 查询没用被占用的教室列表
     *
     * @param map 教室信息
     * @return 教室集合
     */
    public List<TClass> selectTClassListNotIn(HashMap<String,Object> map);

    /**
     * 新增班级
     *
     * @param tClass 班级信息
     * @return 结果
     */
    public int insertTClass(TClass tClass);

    /**
     * 修改班级
     *
     * @param tClass 班级信息
     * @return 结果
     */
    public int updateTClass(TClass tClass);

    /**
     * 删除班级
     *
     * @param id 班级ID
     * @return 结果
     */
    public int deleteTClassById(Integer id);

    /**
     * 批量删除班级
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteTClassByIds(String[] ids);

    List<TClass> selectTClassAlluserId( @Param("userId") Integer userId);

    List<TClass> selectTClassAllBySchoolId1(@Param("schoolId") Integer schoolId);

    List<TClass> selectClassListByTeaId(TClass tClass);

    /**
     * 查找某学校下的所有班级
     *
     * @param schoolId
     * @return
     */
    List<TClass> queryClassListAllForTea(@Param("schoolId") Integer schoolId);
}